/*
 * main.cpp
 *
 *  Created on: 29 d�c. 2011
 *      Author: adrien
 */

#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
#include "Plateau.h"
#include "Position.h"
using namespace std;
int main(int argc, char **argv){
	bool interactif = true ;
	ifstream input ;

//	if (argc > 1 && false ) {
//		// lie le cin à un fichier, pris http://stackoverflow.com/questions/2407077/read-from-cin-or-a-file
//		ifstream input ;
//		char *nomFichier = argv[1] ;
//		input.open(nomFichier) ;
//		streambuf* orig_cin = 0;
//
//		if (!input ) {
//			cout << "erreur ouverture fichier " << nomFichier << endl ;
//			return 1;
//		}
//		orig_cin = cin.rdbuf(input.rdbuf());
//		cin.tie(0); // tied to cout by default
//	}
	if (argc > 1 ) {
		interactif = false ;
		char *nomFichier = argv[1] ;
		input.open(nomFichier) ;
		if (!input ) {
			cout << "erreur ouverture fichier " << nomFichier << endl ;
			return 1;
		}
	}

	int tour;
	Position posi[4];
	tour=1;
	Plateau plateau;
	plateau.reset();
	plateau.afficher();
	string a;
	bool finFichier=false ;
	do{
		if(tour%2==0){
			tour=2;
		}
		else {
			tour=1;
		}
		do{
			if (interactif) {
				cout << " A vous de jouer!";
				getline(cin, a);
			} else {
				if (input.eof()) {
					finFichier=true ;
					break ; // fin de fichier, sort de la boucle
				}
				getline (input, a) ;
				cout << a << endl ;
			}

			//cout << "lu " << a << endl;
			int I = Position::parser(a, posi);

			if (I==0)
				continue ;
			if (plateau.estValide(posi[0].x, posi[0].y, posi[1].x, posi[1].y, tour)){
				break;
			}
		} while(!finFichier);

		plateau.afficher();
		tour++;
	}
	while(plateau.estFini()==0 && !finFichier);

	if (plateau.estFini() == 1){
		cout<<"les blancs on gagn�!";
	}
	else{
		cout<<"les noirs on gagn�!";
	}
}
